package controller;
//SSM

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import pojo.User;
import service.UserService;
import utils.Page;
import java.util.List;

@Controller
//为了让springmvc识别这个类，需要加注解,帮助实例化
@RequestMapping("/user")  // 相当于 servlet的路径
public class UserController {
    //5个if判断(根据传的参数区分) 写成方法 方法加路径绑定
    @Autowired
    private UserService userService;
//    @RequestMapping("/index")
//    public String index(){
//        //逻辑视图名 配合视图解析器 补全路径 打开资源
//        return "index";
//    }//return 反悔字符串，可以解决请求转发的问题
    //springmvc里面有一个视图解析器bean, 默认是/WEB-INF/views/index.jsp,可以修改为重定向，靠返回前缀和后缀1，返回逻辑视图名

    @RequestMapping("/login")
    public String login(User user){
        //登录逻辑
        boolean flag=userService.login(user);
        if(flag){
            //
            return "index";
        }else {
            return "login";
        }
        //方法上写参数可以自动获取参数  name的值和user类中属性一致 参数自动映射过来
    }
    @RequestMapping("/toregist")
    public String toRegist(){
        return "regist";//不用加user/跟其是同级的
    }
    @RequestMapping("/list/{currentPage}")//访问user/list,这里写list
    public String list(User user, @PathVariable("currentPage")  Integer currentPage, Model model){//条件查询的入参
//        Page page=new Page();
//        page.setCurrentPage(CurrentPage);
             //查询数据
                Page page=new Page();
                int totalCount=userService.count(user);
                page.setTotalCount(totalCount);
                page.setCurrentPage(currentPage);
                page.setTotalPage();
               //偏移量
        int offset=(currentPage-1)*page.getPageSize();
        List<User> users=userService.findAll(user,offset,page.getPageSize());//拿数据
        model.addAttribute("users",users);
        model.addAttribute("page",page);
        model.addAttribute("user",user);


        return "user/list";
    }
    @RequestMapping("/toadd")
    public String toAdd()
    {
        return "user/add";
        //重定向到list
    }
    @RequestMapping("/addSave")
    public String addSave(User user){
       int result= userService.addUser(user);
       if(result>0){
           return "redirect:/user/list/1";//转发到list方法,重定向到list第一页
       }
       else{
           return "error";//否则返回当前页面
       }

    }
    @RequestMapping("/delete/{id}")
    public String deleteById(@PathVariable("id") Integer id){
        int result= userService.deleteUserById(id);
        if(result>0){
            return "redirect:/user/list/1";//转发到list方法,重定向到list第一页
        }
        else{
            return "error";//否则返回当前页面
        }
    }
    @RequestMapping("/toupdate/{id}")
    public String toUpdate(@PathVariable("id") Integer id,Model model){
        model.addAttribute("user", userService.findUserById(id));
        return "user/update";
    }
    @RequestMapping("/updateSave")
    public String update(User user){
        int result=userService.updateUser(user);
        if(result>0){
            return "redirect:/user/list/1";//转发到list方法,重定向到list第一页
        }
        else{
            return "user/update";//否则返回当前页面
        }
    }
    @RequestMapping("/checkUserNameUnique")
    @ResponseBody//写这个 return不走视图解析器，直接返回字符串
    public String checkUserNameUnique(@RequestParam("name") String name){
        int count=userService.findUserByName(name);
        if(count>0){
            return "false";//有些返回返回的是页面
        }else{
            return "true";
        }
    }
}
